import {
  request,validator
} from '../../utils/requestUtils';
import { userBehavior } from '../../behaviors/userBehavior'

Page({
  behaviors: [userBehavior],
  // 页面的初始数据
  data: {
    source:'',
    form: {
      contactPhone:'',
      contactPerson:'',
      defaulted:false,// 是否默认
      defineAddr:'',//自定义地址
      attr1:'',//所在区域
      latitude:'',//维度
      longitude:'', // 精度
    }
  },

  // 加载数据
  onLoad(option){
    if(option.id){
      this.getById(option.id);
    }else if(option.source){
      // 如果是支付页面新增地址跳转过来的则需要把最新的地址返回去
      this.setData({
        source:option.source
      })

    }
  },
  // 根据地址id查询地址信息
  async getById(id){
    const result = await request({
      url: `/bus/customer/addr/`+id,
      method: "GET"
    })
    if(result.data.code == 200){
      result.data.data.defaulted = result.data.data.defaulted == 1 ? false :true
      this.setData({
        form:result.data.data
      })
    }
  },
  // 保存收货地址
  async saveAddrssForm(event) {
    console.log('data', this.data.form)
    let postMpdel = JSON.parse(JSON.stringify(this.data.form))
    postMpdel.defaulted = this.data.form.defaulted?2:1
    const { valid } = await this.validatorAddress(postMpdel)
     if (!valid) return
    const result = await request({
      url: `/bus/customer/addr`,
      method: "POST",
      data: postMpdel
    })
    if(result.data.code == 200){
      if(this.data.source && this.data.source=='pay' ){
        console.log('result.data.data', result.data.data)
        this.setDefaultAddr(result.data.data)
      }
      wx.navigateBack({
        delta: 1
      })
    }
  },


  // 输入框方法
  onChange(event) {
    switch (event.currentTarget.dataset['input']) {
      case 'contactPerson':
        this.setData({
          "form.contactPerson": event.detail,
        })
        break;
      case 'contactPhone':
        this.setData({
          "form.contactPhone": event.detail,
        })
        break;
    }

  },
  // 设置详细地址的值
  onDefineAddrChange(event){
    this.setData({
      "form.defineAddr": event.detail.value,
    })
  },
  // 设置是否默认地址
  onDefaultedChange(event){
    this.setData({
      "form.defaulted": event.detail.value ,
    })
  },
    // 对新增收货地址请求参数进行验证
    validatorAddress(params) {
      // 验证收货人，是否只包含大小写字母、数字和中文字符
      const nameRegExp = '^[a-zA-Z\\d\\u4e00-\\u9fa5]+$'
      // 验证手机号，是否符合中国大陆手机号码的格式
      const phoneReg = '^1(?:3\\d|4[4-9]|5[0-35-9]|6[67]|7[0-8]|8\\d|9\\d)\\d{8}$'
      // 创建验证规则
      const rules = {
        contactPerson: [
          { required: true, message: '请输入收货人姓名' },
          { pattern: nameRegExp, message: '收货人姓名不合法' }
        ],
        contactPhone: [
          { required: true, message: '请输入收货人手机号' },
          { pattern: phoneReg, message: '收货人手机号不合法' }
        ],
        attr1: { required: true, message: '请选择收货人所在地区' },
        defineAddr: { required: true, message: '请输入详细地址' }
      }
  
      return validator(params,rules)
    },
      // 获取用户地理位置信息
  async onLocation() {
    const { latitude, longitude, name } = await wx.chooseLocation()
    this.setData({
      'form.longitude':longitude,
      'form.latitude':latitude,
      'form.attr1':name
    })
  },
})